﻿package org.dm.math.geom
{
	import org.dm.utils.math.Num2;
	/**
	 * ...
	 * @author Scott
	 */
	public class Line2 extends Object
	{
		
		public function Line2() 
		{
			
		}
		
		public static function DistanceLine(x1:Number,y1:Number,x2:Number,y2:Number,x0:Number,y0:Number):Number // a和b是线段的两个端点， c是检测点
		{
			var a:Num2 = new Num2(x1, y1);
			var b:Num2 = new Num2(x2, y2);
			var c:Num2 = new Num2(x0, y0);
			
			var ab:Num2 = Num2.subtract(b, a);
			var ac:Num2 = Num2.subtract(c, a);
			
			var f:Number = Num2.dot(ab, ac);
			//if (f < 0) return Num2.distance(a, c);
			if (f < 0) return Num2.distanceEq(a, c);
			var d:Number = Num2.dot(ab, ab);
			if (f > d) return Num2.distanceEq(a, c);
			
			ab.multiplyEq(f/d);
			var e:Num2 = Num2.add(a, ab);
			return Num2.distanceEq(a, e);
		}
		
	//　　 Point ab = b - a;
	//　　 Point ac = c-a;
	//　　 float f = ab * ac;
	//　　 if (f<0) return Distance(a, c);
	//　　 float d = ab * ab;
	//　　 if ( f>d) return Distance(a, c);
	//　　 f = f/d; 
	//　　 Point D = a + f *ab; // c在ab线段上的投影点
	//　　 return Distance(a, D);
	//　　}

	}

}